A. Technical Field
This application relates generally to routing data traffic within a communication network system, and more particularly to trunking and managing data flow paths amongst switching devices within the communication network system.
B. Background of the Technical Field
As used herein, the term “fibre channel” refers to the Fibre Channel family of standards (developed by the American National Standards Institute (ANSI)). In general, fibre channel defines a transmission medium based on a high speed communications interface for the transfer of large amounts of data via connections between a variety of hardware devices, including devices such as personal computers, workstations, mainframes, supercomputers and storage devices. Use of fibre channel is proliferating in many applications, particularly client/server applications which demand high bandwidth and low latency input/output (I/O). Examples of such applications include mass storage, medical and scientific imaging, multimedia communications, transaction processing, distributed computing and distributed database processing applications.
In one aspect of the fibre channel standard, the communication between devices is facilitated over a fabric. The fabric is typically constructed from one or more fibre channel switches and each device (or group of devices, for example, in the case of loops) is coupled to the fabric. Devices coupled to the fabric are capable of communicating with every other device coupled to the fabric.
When a communication network system includes a multi-switch Fibre Channel fabric, switches are typically coupled together by connecting their respective E_Ports to create the fabric and to enable frames to be carried between switches in order to configure and maintain the fabric. An E_Port on one (i.e., local) switch is a fabric expansion port which is communicatively coupled to another E_Port on a corresponding (i.e., remote) switch to create an Inter-Switch link (ISL) between adjacent switches. Frames with a destination, other than local to a switch or any other types of ports (i.e., N_Port or NL_Port) coupled to the local switch, exit the local switch passing through the E_Port. By contrast, frames that enter a switch through an E_Port travel to a destination local to the switch or to other destinations through another E_Port. Amongst the switches, the ISLs generally carry frames originating from a node port as well as those frames which are generated within the fabric. Additionally, ISLs are conventionally used by switches to transmit and receive frames amongst switches within the fabric, and will be understood by those skilled in the art to be point-to-point links amongst switches.
Due to limitations imposed by certain Fibre Channel protocol devices, frame traffic between a source device and a destination device must be delivered “in-order” within an exchange. Two examples of this include: protocol chips such as those used in host adapters and in storage arrays; and frames participating within a Fibre Channel exchange between a source device and a destination device. Such examples require “in-order” delivery of frames to maintain the cardinality of associated functions. The requirement for “in-order” delivery often results in frame routing techniques that entail fixed routing paths within a fabric. Although such fixed routes guarantee that all frames between source and destination ports are delivered “in-order,” at least in the absence of topology changes internal to the fabric, the fixed routing paths are problematic for several reasons.
Firstly, certain traffic patterns in a fabric may cause all active routes to be allocated to certain available path(s), thereby creating a high probability for congestion through such available path(s). Given more than one path between a set of source ports and a set of destination ports, a portion of the “streams” would be allocated to each possible path. For purposes of discussion herein, a “stream” is defined as the data traffic between a single source and destination port pair. In certain combinations of streams that are active, the traffic load would be evenly distributed across the available paths, and the optimum performance (given the fabric topology) would be realized. If, however, a different collection of streams happened to be running simultaneously, a drawback arises in that all of the active streams can be allocated to a single one of the available paths, and the remaining paths would be unused. This results in a performance bottleneck, especially if the aggregation of the streams exceeded the capacity of one of the ISLs forming the path between source and destination ports.
Secondly, having traffic routed through a single available path or only certain ones of all available paths results in system inefficiency because other paths become underutilized.
Thirdly, the bandwidth of traffic flow is limited because only one path is or only a few paths are relied upon. It is noted that as the result of continuous advances in technology, particularly in the area of networking such as the Internet, there is an increasing demand for communications bandwidth. For example, there are many applications that require the high speed transmission of large amounts of data, including the transmission of images or video over the Internet, the transaction processing and video-conferencing implemented over a public telephone network, and the transmission of data over a telephone company's trunk lines. For these types of data intensive-applications to be implemented at a high rate of data transfer, high bandwidth is desirable.
What is needed is a manner in which: (1) to alleviate frame traffic congestion along particular ISLs; (2) to enable frame traffic to be evenly distributed across available ISLs so that all available paths are utilized; and (3) to improve the communications bandwidth through ISLs, all the while maintaining “in-order” delivery of frames.